package com.smartcampusbackend.service;

import com.smartcampusbackend.model.Grade;

import java.util.List;
import java.util.Map;

public interface GradeService {
    /**
     * 获取学生的所有成绩
     * @param studentId 学生ID
     * @return 成绩列表
     */
    List<Map<String, Object>> getStudentGrades(String studentId);
    
    /**
     * 获取学生的成绩统计信息
     * @param studentId 学生ID
     * @return 统计信息
     */
    Map<String, Object> getStudentGradeStatistics(String studentId);
    
    /**
     * 获取课程的所有学生成绩
     * @param courseId 课程ID
     * @return 成绩列表
     */
    List<Map<String, Object>> getCourseGrades(String courseId);
    
    /**
     * 获取教师所教课程的学生列表
     * @param teacherId 教师ID
     * @param courseId 课程ID
     * @return 学生列表
     */
    List<Map<String, Object>> getCourseStudents(String teacherId, String courseId);
    
    /**
     * 录入或更新学生成绩
     * @param grade 成绩信息
     * @return 是否成功
     */
    boolean saveOrUpdateGrade(Grade grade);
    
    /**
     * 批量录入或更新学生成绩
     * @param grades 成绩列表
     * @return 是否成功
     */
    boolean batchSaveOrUpdateGrades(List<Grade> grades);
    
    /**
     * 计算最终成绩
     * @param regularGrade 平时成绩
     * @param examGrade 期末成绩
     * @param regularWeight 平时成绩权重
     * @param examWeight 期末成绩权重
     * @return 最终成绩
     */
    Double calculateFinalGrade(Double regularGrade, Double examGrade, Double regularWeight, Double examWeight);
} 